package com.bilibili.utils;

import java.util.Calendar;
import java.util.Date;
import java.util.Random;
import java.util.UUID;

/**
 * 随机数工具类
 */
public class RandomUtils {
    private RandomUtils() {

    }

    /**
     * 生成随机数字验证码
     *
     * @param length 验证码的长度
     * @return 随机生成的数字验证码
     */
    public static String generateValidateCode(int length) {
        Random r = new Random();
        String charsStr = "1234567890";
        String result = "";
        for (int i = 1; i <= length; i++) {
            result += charsStr.charAt(r.nextInt(charsStr.length()));
        }
        return result;
    }

    /**
     * 生成一个随机字符串
     * 1、可以用作用户的登录凭证的值
     * 2、……
     *
     * @return 随机字符串
     */
    public static String generateUuid() {
        return UUID.randomUUID().toString().replace("-", "");
    }

    /**
     * 生成订单中固定的一些前缀信息
     *
     * @param date 当前日期
     * @return 订单中的前缀部分，精确到小时
     */
    public static String getOrderIdOrefix(Date date) {
        Calendar c = Calendar.getInstance();
        c.setTime(date);
        int year = c.get(Calendar.YEAR);
        int day = c.get(Calendar.DAY_OF_YEAR);
        int hour = c.get(Calendar.HOUR_OF_DAY);
        String dayFmt = String.format("%1$03d", day);
        String hourFmt = String.format("%1$02d", hour);
        return year - 2000 + dayFmt + hourFmt;
    }
}
